package site.qjdb.service.impl;


import org.springframework.stereotype.Service;
import site.qjdb.dao.GoodsDao;
import site.qjdb.pojo.Goods;
import site.qjdb.pojo.pagination.PageBean;
import site.qjdb.service.GoodsService;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class GoodsServiceImpl implements GoodsService {
	@Resource
	private GoodsDao goodsDao;

	@Override
	public void addGoods(Goods goods) {
		goodsDao.addGoods(goods);
	}
	
	/**
	 * 	根据条件查看商品，默认按时间降序
	 * 
	 * */
	@Override
	public List<Goods> findGoodsAll(Goods goods) {
		Map<String,Object> map = new HashMap<>();
		map.put("goods", goods);
		map.put("orderBy", "goods.time desc");
		return goodsDao.selectGoodsAll(map);
	}
	
	/**
	 * 	根据条件查看商品
	 * 
	 * */
	@Override
	public List<Goods> findGoodsAll(Goods goods, String orderBy) {
		Map<String,Object> map = new HashMap<>();
		map.put("goods", goods);
		map.put("orderBy", orderBy);
		return goodsDao.selectGoodsAll(map);
	}

	@Override
	public void modifyGoods(Goods goods) {
		goodsDao.updateGoods(goods);
	}
	
	/**
	 * 	根据gid查找商品，找不到则返回null。
	 * 
	 * */
	@Override
	public Goods findGoods(Goods goods) {
		Map<String,Object> map = new HashMap<>();
		map.put("goods", goods);
		List<Goods> goodsList = goodsDao.selectGoodsAll(map);
		if(goodsList == null || goodsList.size() == 0) {
			return null;
		} else {
			return goodsList.get(0);
		}
	}

	@Override
	public PageBean<Goods> searchGoodsAll(String keyword,
										  String condition,
										  Integer pc,
										  Integer ps,
										  Goods goods,
										  String price) {
		// 设置商品信息
		Goods _goods = null;
		if(goods == null) {
			_goods = new Goods();
		} else {
			_goods = goods;
		}
		// 设置商品详情
		_goods.setDetails(keyword);
		// 设置商品标签
		_goods.setLabel(keyword);
		// 设置商品名称
		_goods.setName(keyword);
		// 设置商品状态
		_goods.setState(1);
		PageBean<Goods> pageBean = new PageBean<>();
		// 设置当前页码
		pageBean.setPc(pc);
		// 设置一页的数据量
		pageBean.setPs(ps);
		Map<String,Object> map = new HashMap<>();
		map.put("goods", _goods);
		map.put("orderBy", condition);
		map.put("pageBean", pageBean);
		// 设置价格区间
		if(price != null) {
			map.put("minPrice", Integer.parseInt(price.split("-")[0]) * 100);
			map.put("maxPrice", Integer.parseInt(price.split("-")[1]) * 100);
		}
		// 搜索商品
		List<Goods> goodsList = goodsDao.searchGoods(map);
		if(goodsList == null || goodsList.size() == 0) {
			return null;
		} else {
			// 设置总数据量
			pageBean.setTr(goodsDao.searchGoodsCount(map));
			// 设置beanList
			pageBean.setBeanList(goodsList);
			return pageBean;
		}
	}

	/**
	 * 	商品下架，必须有uid和gid
	 * 	若没找到该商品则返回0
	 * 	找到了但已下架则返回1
	 * 	成功返回2
	 * 
	 * */
	@Override
	public int undercarriage(Goods goods) {
		Map<String, Object> map = new HashMap<>();
		map.put("goods", goods);
		List<Goods> goodsList = goodsDao.selectGoodsAll(map);
		if(goodsList == null || goodsList.size() == 0) {
			return 0;
		}
		Goods newGoods = goodsList.get(0);
		if(newGoods.getState() == 3) {
			return 1;
		}
		// 设置商品状态为3
		goods.setState(3);
		goodsDao.updateGoods(goods);
		return 2;
			
	}
//
//	@Override
//	public void passGoods(Integer gid) throws AdminException {
//		Goods goods = new Goods();
//		goods.setGid(gid);
//		goods.setState(0);
//		// 若找不到则抛异常
//		if(findGoods(goods) == null) {
//			throw new AdminException("未找到商品");
//		}
//		// 改变状态为1（通过）
//		goods.setState(1);
//		modifyGoods(goods);
//	}
//
//	@Override
//	public void notPassGoods(Integer gid) throws AdminException {
//		Goods goods = new Goods();
//		goods.setGid(gid);
//		goods.setState(0);
//		// 若找不到则抛异常
//		if(findGoods(goods) == null) {
//			throw new AdminException("未找到商品");
//		}
//		// 改变状态为2（通过）
//		goods.setState(2);
//		modifyGoods(goods);
//	}

}
